<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //原型对象
      function Star(uname, age, song) {
        this.uname = uname
        this.age = age
        this.song = song
      }
      console.dir(Star)

      function fn1() {}

      console.dir(fn1)

      //箭头函数不能作为构造函数的原因是箭头函数没有prototype
      // const fn2 = () => {}

      // console.dir(fn2)

      //将公共方法挂载到原型对象上
      // Star.prototype.sing = function () {
      //   console.log(`我会唱${this.song}`)
      // }
      //prototype 构造函数的原型
      // console.log(Star.prototype)

      //所有的实例对象如果身上没有方法，会去找原型对象的方法
      // const zjl = new Star('周杰伦', 40, '一路向北')
      // const ljj = new Star('林俊杰', 42, '江南')

      // console.log(zjl)
      // console.log(ljj)

      // zjl.sing()
      // ljj.sing()

      // console.log(zjl.sing === ljj.sing)

      // const arr = [1, 2, 3, 4]

      // const arr = new Array(1, 2, 3, 4)

      // console.log(arr)

      // console.log(Array.prototype)

      // obj.__proto__ = Fn.prototype
    </script>
  </body>
</html>
